/*
 * Copyright 2013 University of Padua, Italy
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package it.unipd.dei.bd.icineasti.servlet;

import it.unipd.dei.bd.icineasti.database.GetAssociatedUtenteDatabase;
import it.unipd.dei.bd.icineasti.resource.Utente;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;

import org.apache.commons.codec.digest.DigestUtils;

/**
 * Riceve mail e password di un utente e verifica
 * corrispondano ad i dati memorizzati nel db.
 * 
 * Se i dati corrispondono memorizza alcuni dati 
 * relativi all'utente nella sessione corrente per
 * consentire alle altre pagine visitate di verificare se
 * l'utente sia correttamente loggato o meno.
 * 
 * ATTENZIONE: i dati memorizzati nella sessione vengono
 * utilizzati dalla pagina di modifica_dati_utente !!
 * 
 * @author Bardelle Renzo
 * @version 1.00
 */

public class VerificaMailPasswordServlet extends AbstractDatabaseServlet {

	public void doPost(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {

		res.setContentType("text/html");

		PrintWriter out = res.getWriter();
		
		String insertedEmail = req.getParameter("email");
		String insertedMd5Pw = DigestUtils.md5Hex(req.getParameter("password"));

		Connection con = null;

		try {
			con = DS.getConnection();

			Utente u = new GetAssociatedUtenteDatabase(con, insertedEmail, insertedMd5Pw)
					.getUtente();

			if( u == null)
			{
				out.printf("<p>Email o password errati.</p>");
			}
			else if ( !u.getAttivo() )
			{
				out.printf("<p>Account utente disattivato, per informazioni contattare una delle nostre sedi.</p>");
			}
			else
			{
				HttpSession session = req.getSession(true);
				
				session.putValue("utente",u.getNome()+" "+u.getCognome());
				
				session.putValue("id_utente", u.getIdutente());
				session.putValue("nome_utente",u.getNome());
				session.putValue("cognome_utente",u.getCognome());
				session.putValue("email_utente",u.getEmail());
				session.putValue("cartacredito_utente",u.getCartacredito());
				session.putValue("codfiscale_utente",u.getCodfiscale());
				session.putValue("newsletter_utente",u.getNewsletter());
				session.putValue("password",u.getPassword());
				session.putValue("amministrativo",u.getAmministrativo());
			}

		} catch (NullPointerException e) {
			out.printf("<p>Impossibile creare la connessione al database.</p>");
		} catch (SQLException e) {
			out.printf("<p>Errore durante l'accesso al database.</p>"+e.getMessage());
		}

		out.flush();
		out.close();

	}

}
